//
//  UITableView+Extension.h
//  TableDemo
//
//  Created by jutuo on 2020/4/1.
//  Copyright © 2020 jutuo. All rights reserved.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UITableView (Extension)
/**
 *1、beginUpdates 和 endUpdates必须成对使用

 *2、使用beginUpdates和endUpdates可以在改变一些行（row）的高度时自带动画，并且不需要Reload row（不用调用cellForRow，仅仅需要调用heightForRow，这样效率最高）。

 *3、在beginUpdates和endUpdates中执行insert,delete,select,reload row时，动画效果更加同步和顺滑，否则动画卡顿且table的属性（如row count）可能会失效。

 *4、在beginUpdates 和 endUpdates中执行 reloadData 方法和直接reloadData一样，没有相应的中间动画。
 */
- (void)updateWithBlock:(void (^)(UITableView *tableView))block;
/**
 * 滚动到指定位置
 */
- (void)scrollToRow:(NSUInteger)row inSection:(NSUInteger)section atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

/**
 * 插入一行
 */

- (void)insertRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;
/**
 * 刷新某一行
 */
- (void)reloadRowAtIndexPath:(NSIndexPath *)indexPath withRowAnimation:(UITableViewRowAnimation)animation;

- (void)reloadRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;

/**
 *删除某一行
 */
- (void)deleteRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;
/**
 * 插入section
 */
- (void)insertSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;
/**
* 删除section
*/
- (void)deleteSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;

/**
 * 刷新某一section
 */
- (void)reloadSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;

/**
 * 重置选中的行
 */
- (void)clearSelectedRowsAnimated:(BOOL)animated;

/**
 * 获取cell 类名须跟identifier一致
 *
 */


- (id)tableViewHeaderFooterViewByClassWithIdentifier:(NSString *)identifier;
@end

NS_ASSUME_NONNULL_END
